ci: Refactor the CI pipeline
authorEmmanuele Bassi <ebassi@gnome.org>
Wed, 29 Jan 2020 09:35:10 +0000 (10:35 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 11 Feb 2020 13:39:52 +0000 (13:39 +0000)
We should have a single job for building both static and shared
versions of GTK. On the other hand, having a separate job for the
release build would be a plus.

Additionally, we shouldn't use an opaque script to build GTK; the only
step in the process that requires hand-holding is running the tests
suites under Xvfb, and having the build options visible from the YAML
file gives us a better idea of what kind of build we're running.

.gitlab-ci.yml
.gitlab-ci/Dockerfile [deleted file]
.gitlab-ci/fedora.Dockerfile [new file with mode: 0644]
.gitlab-ci/run-tests.sh [new file with mode: 0755]

index 2c3b35b62ec7af5933cc41ac6268220df96ccefb..7f5ef322da847255345b219ff229b1397f8f41c0 100644 (file)
@@ -12,11 +12,38 @@ stages:
     - subprojects/libepoxy/
     - subprojects/pango/
 
-fedora-x86_64: &fedora-x86_64-defaults
+# Common variables
+variables:
+  COMMON_MESON_FLAGS: "--fatal-meson-warnings --werror"
+  MESON_TEST_TIMEOUT_MULTIPLIER: 2
+  G_MESSAGES_DEBUG: all
+
+fedora-x86_64:
   image: registry.gitlab.gnome.org/gnome/gtk/master:v10
   stage: build
+  variables:
+    EXTRA_MESON_FLAGS: "--buildtype=debug --default-library=both"
   script:
-    - bash -x ./.gitlab-ci/test-docker.sh
+    - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS}
+            -Dx11-backend=true
+            -Dwayland-backend=true
+            -Dbroadway-backend=true
+            -Dvulkan=yes
+            -Dprofiler=true
+            _build
+    - ninja -C _build
+    - .gitlab-ci/run-tests.sh _build
+    - .gitlab-ci/meson-junit-report.py
+            --project-name=gtk
+            --job-id="${CI_JOB_NAME}"
+            --output=_build/report.xml
+            _build/meson-logs/testlog.json
+    - .gitlab-ci/meson-html-report.py
+            --project-name=gtk
+            --job-id="${CI_JOB_NAME}"
+            --reftest-output-dir="_build/testsuite/reftests/output"
+            --output=_build/report.html
+            _build/meson-logs/testlog.json
   artifacts:
     when: always
     reports:
@@ -34,10 +61,19 @@ fedora-x86_64: &fedora-x86_64-defaults
     key: "$CI_JOB_NAME"
     <<: *cache-paths
 
-fedora-x86_64-staticlibs:
+fedora-x86_64-release:
+  image: registry.gitlab.gnome.org/gnome/gtk/master:v10
+  stage: build
   variables:
-    EXTRA_MESON_FLAGS: "-Ddefault_library=both"
-  <<: *fedora-x86_64-defaults
+    EXTRA_MESON_FLAGS: "--buildtype=release"
+  script:
+    - meson ${COMMON_MESON_FLAGS} ${EXTRA_MESON_FLAGS}
+            -Dx11-backend=true
+            -Dwayland-backend=true
+            -Dbroadway-backend=true
+            -Dvulkan=yes
+            _build
+    - ninja -C _build
 
 .mingw-defaults: &mingw-defaults
   stage: build
diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile
deleted file mode 100644 (file)
index d8cabe1..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-FROM fedora:31
-
-RUN dnf -y install \
-    adwaita-icon-theme \
-    atk-devel \
-    at-spi2-atk-devel \
-    avahi-gobject-devel \
-    cairo-devel \
-    cairo-gobject-devel \
-    ccache \
-    colord-devel \
-    cups-devel \
-    dbus-daemon \
-    dejavu-sans-mono-fonts \
-    desktop-file-utils \
-    diffutils \
-    elfutils-libelf-devel \
-    fribidi-devel \
-    gcc \
-    gcc-c++ \
-    gdk-pixbuf2-devel \
-    gdk-pixbuf2-modules \
-    gettext \
-    git \
-    glib2-devel \
-    glibc-devel \
-    glibc-headers \
-    gobject-introspection-devel \
-    graphene-devel \
-    gstreamer1-devel \
-    gstreamer1-plugins-good \
-    gstreamer1-plugins-bad-free-devel \
-    gstreamer1-plugins-base-devel \
-    gtk-doc \
-    hicolor-icon-theme \
-    iso-codes \
-    itstool \
-    json-glib-devel \
-    lcov \
-    libattr-devel \
-    libepoxy-devel \
-    libffi-devel \
-    libmount-devel \
-    librsvg2 \
-    libselinux-devel \
-    libXcomposite-devel \
-    libXcursor-devel \
-    libXcursor-devel \
-    libXdamage-devel \
-    libXfixes-devel \
-    libXi-devel \
-    libXinerama-devel \
-    libxkbcommon-devel \
-    libXrandr-devel \
-    libXrender-devel \
-    libXtst-devel \
-    libxslt \
-    mesa-dri-drivers \
-    mesa-libEGL-devel \
-    mesa-libwayland-egl-devel \
-    ninja-build \
-    pango-devel \
-    pcre-devel \
-    python3 \
-    python3-jinja2 \
-    python3-pip \
-    python3-wheel \
-    redhat-rpm-config \
-    sassc \
-    sysprof-devel \
-    systemtap-sdt-devel \
-    vulkan-devel \
-    wayland-devel \
-    wayland-protocols-devel \
-    which \
-    xorg-x11-server-Xvfb \
- && dnf clean all
-
-RUN pip3 install meson==0.52.1
-
-ARG HOST_USER_ID=5555
-ENV HOST_USER_ID ${HOST_USER_ID}
-RUN useradd -u $HOST_USER_ID -ms /bin/bash user
-
-USER user
-WORKDIR /home/user
-
-ENV LANG C.UTF-8
diff --git a/.gitlab-ci/fedora.Dockerfile b/.gitlab-ci/fedora.Dockerfile
new file mode 100644 (file)
index 0000000..a9006c0
--- /dev/null
@@ -0,0 +1,89 @@
+FROM fedora:31
+
+RUN dnf -y install \
+    adwaita-icon-theme \
+    atk-devel \
+    at-spi2-atk-devel \
+    avahi-gobject-devel \
+    cairo-devel \
+    cairo-gobject-devel \
+    ccache \
+    colord-devel \
+    cups-devel \
+    dbus-daemon \
+    dejavu-sans-mono-fonts \
+    desktop-file-utils \
+    diffutils \
+    elfutils-libelf-devel \
+    fribidi-devel \
+    gcc \
+    gcc-c++ \
+    gdk-pixbuf2-devel \
+    gdk-pixbuf2-modules \
+    gettext \
+    git \
+    glib2-devel \
+    glibc-devel \
+    glibc-headers \
+    gobject-introspection-devel \
+    graphene-devel \
+    gstreamer1-devel \
+    gstreamer1-plugins-good \
+    gstreamer1-plugins-bad-free-devel \
+    gstreamer1-plugins-base-devel \
+    gtk-doc \
+    hicolor-icon-theme \
+    iso-codes \
+    itstool \
+    json-glib-devel \
+    lcov \
+    libattr-devel \
+    libepoxy-devel \
+    libffi-devel \
+    libmount-devel \
+    librsvg2 \
+    libselinux-devel \
+    libXcomposite-devel \
+    libXcursor-devel \
+    libXcursor-devel \
+    libXdamage-devel \
+    libXfixes-devel \
+    libXi-devel \
+    libXinerama-devel \
+    libxkbcommon-devel \
+    libXrandr-devel \
+    libXrender-devel \
+    libXtst-devel \
+    libxslt \
+    mesa-dri-drivers \
+    mesa-libEGL-devel \
+    mesa-libwayland-egl-devel \
+    ninja-build \
+    pango-devel \
+    pcre-devel \
+    pygments \
+    python3 \
+    python3-jinja2 \
+    python3-pip \
+    python3-wheel \
+    redhat-rpm-config \
+    sassc \
+    sysprof-devel \
+    systemtap-sdt-devel \
+    vulkan-devel \
+    wayland-devel \
+    wayland-protocols-devel \
+    which \
+    xorg-x11-server-Xvfb \
+ && dnf clean all
+
+RUN pip3 install meson==0.52.1
+
+ARG HOST_USER_ID=5555
+ENV HOST_USER_ID ${HOST_USER_ID}
+RUN useradd -u $HOST_USER_ID -ms /bin/bash user
+
+USER user
+WORKDIR /home/user
+
+ENV LANG C.UTF-8
diff --git a/.gitlab-ci/run-tests.sh b/.gitlab-ci/run-tests.sh
new file mode 100755 (executable)
index 0000000..ad3a4a7
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e
+
+builddir=$1
+
+cd ${builddir}
+xvfb-run -a -s "-screen 0 1024x768x24" \
+        meson test --print-errorlogs \
+                --suite=gtk
+                --no-suite=gtk:a11y